package com.example.testapp.api;

import com.example.testapp.model.BookData;
import com.example.testapp.model.BookDataAddRequest;
import com.example.testapp.model.BookDataUpdateRequest;
import com.example.testapp.model.ChangePasswordRequest;
import com.example.testapp.model.LoginRequest;
import com.example.testapp.model.RegisterRequest;
import com.example.testapp.model.UserResponse;
import com.example.testapp.model.UserUpdateRequest;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface ApiService {
    // 用户登录
    @POST("/api/user/login")
    Call<UserResponse> login(@Body LoginRequest request);

    // 用户注册
    @POST("/api/user/register")
    Call<UserResponse> register(@Body RegisterRequest request);

    // 添加账单记录
    @POST("/api/book/add")
    Call<Void> addBookData(@Body BookDataAddRequest request);

    // 修改账单记录
    @PUT("/api/book/update")
    Call<Void> updateBookData(@Body BookDataUpdateRequest request);

    // 删除账单记录
    @DELETE("/api/book/delete/{id}")
    Call<Void> deleteBookData(@Path("id") int id);

    // 查询当前用户的所有账单记录（按用户 ID）
    @GET("/api/book/list")
    Call<List<BookData>> getBookDataList(@Query("userId") int userId);

    // 根据用户 ID 和年月查询收支数据
    @GET("/api/book/by-year-month")
    Call<List<BookData>> listByYearMonth(@Query("userId") int userId, @Query("yearMonth") String yearMonth);

    /**
     * 获取用户详情
     * @param userId 用户ID
     * @return 用户响应数据
     */
    @GET("/api/user/{id}")
    Call<UserResponse> getUserDetail(@Path("id") int userId);

    @PUT("api/user/update")
    Call<Void> updateUser(@Body UserUpdateRequest request);

    @PUT("api/user/changePassword")
    Call<Void> changePassword(@Body ChangePasswordRequest request);

    @DELETE("api/user/{id}")  // 对应后端的@DeleteMapping("/{id}")
    Call<Void> deleteUser(@Path("id") int userId);
}